home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / circus.c < prev    next >
C/C++ Source or Header  |  2000-05-13  |  17KB  |  543 lines

  1. /***************************************************************************
  2.  
  3. Circus memory map
  4.  
  5. driver by Mike Coates
  6.  
  7. 0000-00FF Base Page RAM
  8. 0100-01FF Stack RAM
  9. 1000-1FFF ROM
  10. 2000      Clown Verticle Position
  11. 3000      Clown Horizontal Position
  12. 4000-43FF Video RAM
  13. 8000      Clown Rotation and Audio Controls
  14. F000-FFF7 ROM
  15. FFF8-FFFF Interrupt and Reset Vectors
  16.  
  17. A000      Control Switches
  18. C000      Option Switches
  19. D000      Paddle Position and Interrupt Reset
  20.  
  21.   CHANGES:
  22.   MAB 09 MAR 99 - changed overlay support to use artwork functions
  23.  
  24. ***************************************************************************/
  25.  
  26. #include "driver.h"
  27. #include "vidhrdw/generic.h"
  28.  
  29. WRITE_HANDLER( circus_clown_x_w );
  30. WRITE_HANDLER( circus_clown_y_w );
  31. WRITE_HANDLER( circus_clown_z_w );
  32.  
  33. extern int circus_vh_start(void);
  34.  
  35. extern void crash_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  36. extern void circus_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  37. extern void robotbowl_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  38.  
  39. extern int crash_interrupt(void);
  40.  
  41. static int circus_interrupt;
  42.  
  43. static READ_HANDLER( ripcord_IN2_r )
  44. {
  45.     circus_interrupt ++;
  46.     logerror("circus_int: %02x\n", circus_interrupt);
  47.     return readinputport (2);
  48. }
  49.  
  50. static struct MemoryReadAddress readmem[] =
  51. {
  52.     { 0x0000, 0x01ff, MRA_RAM },
  53.     { 0x1000, 0x1fff, MRA_ROM },
  54.     { 0x4000, 0x43ff, MRA_RAM },
  55.     { 0xa000, 0xa000, input_port_0_r },
  56.     { 0xc000, 0xc000, input_port_1_r }, /* DSW */
  57. //    { 0xd000, 0xd000, input_port_2_r },
  58.     { 0xd000, 0xd000, ripcord_IN2_r },
  59.     { 0xf000, 0xffff, MRA_ROM },
  60.     { -1 }  /* end of table */
  61. };
  62.  
  63. static struct MemoryWriteAddress writemem[] =
  64. {
  65.     { 0x0000, 0x01ff, MWA_RAM },
  66.     { 0x1000, 0x1fff, MWA_ROM },
  67.     { 0x2000, 0x2000, circus_clown_x_w },
  68.     { 0x3000, 0x3000, circus_clown_y_w },
  69.     { 0x4000, 0x43ff, videoram_w, &videoram, &videoram_size },
  70.     { 0x8000, 0x8000, circus_clown_z_w },
  71.     { 0xf000, 0xffff, MWA_ROM },
  72.     { -1 }  /* end of table */
  73. };
  74.  
  75.  
  76. INPUT_PORTS_START( circus )
  77.     PORT_START /* IN0 */
  78.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  79.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  80.     PORT_BIT( 0x7c, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  81.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  82.  
  83.     PORT_START      /* Dip Switch */
  84.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
  85.     PORT_DIPSETTING(    0x00, "3" )
  86.     PORT_DIPSETTING(    0x01, "5" )
  87.     PORT_DIPSETTING(    0x02, "7" )
  88.     PORT_DIPSETTING(    0x03, "9" )
  89.     PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Coinage ) )
  90. //    PORT_DIPSETTING(    0x08, DEF_STR( 2C_1C ) )
  91.     PORT_DIPSETTING(    0x0c, DEF_STR( 2C_1C ) )
  92.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_1C ) )
  93.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_2C ) )
  94.     PORT_DIPNAME( 0x10, 0x00, "Top Score" )
  95.     PORT_DIPSETTING(    0x10, "Credit Awarded" )
  96.     PORT_DIPSETTING(    0x00, "No Award" )
  97.     PORT_DIPNAME( 0x20, 0x00, "Bonus" )
  98.     PORT_DIPSETTING(    0x00, "Single Line" )
  99.     PORT_DIPSETTING(    0x20, "Super Bonus" )
  100.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
  101.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  102.     PORT_DIPSETTING(    0x40, DEF_STR( On ) )
  103.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
  104.  
  105.     PORT_START      /* IN2 - paddle */
  106.     PORT_ANALOG( 0xff, 115, IPT_PADDLE, 30, 10, 64, 167 )
  107. INPUT_PORTS_END
  108.  
  109.  
  110. INPUT_PORTS_START( robotbwl )
  111.     PORT_START /* IN0 */
  112.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  113.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  114.     PORT_BITX(0x04, IP_ACTIVE_HIGH, 0,"Hook Right", KEYCODE_X, 0 )
  115.     PORT_BITX(0x08, IP_ACTIVE_HIGH, 0,"Hook Left", KEYCODE_Z, 0 )
  116.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  117.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
  118.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
  119.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  120.  
  121.     PORT_START      /* Dip Switch */
  122.     PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
  123.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  124.     PORT_DIPSETTING(    0x01, DEF_STR( On ) )
  125.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
  126.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  127.     PORT_DIPSETTING(    0x02, DEF_STR( On ) )
  128.     PORT_DIPNAME( 0x04, 0x04, "Beer Frame" )
  129.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  130.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  131.     PORT_DIPNAME( 0x18, 0x08, DEF_STR( Coinage ) )
  132.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  133.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_1C ) )
  134.     PORT_DIPSETTING(    0x00, "1 Coin - 2 Players game" )
  135. //    PORT_DIPSETTING(    0x18, "1 Coin - 2 Players game" )
  136.     PORT_DIPNAME( 0x60, 0x00, "Bowl Timer" )
  137.     PORT_DIPSETTING(    0x00, "3 seconds" )
  138.     PORT_DIPSETTING(    0x20, "5 seconds" )
  139.     PORT_DIPSETTING(    0x40, "7 seconds" )
  140.     PORT_DIPSETTING(    0x60, "9 seconds" )
  141.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
  142. INPUT_PORTS_END
  143.  
  144.  
  145. INPUT_PORTS_START( crash )
  146.     PORT_START /* IN0 */
  147.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  148.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  149.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
  150.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
  151.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1)
  152.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
  153.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
  154.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  155.  
  156.     PORT_START      /* Dip Switch */
  157.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Lives ) )
  158.     PORT_DIPSETTING(    0x00, "2" )
  159.     PORT_DIPSETTING(    0x01, "3" )
  160.     PORT_DIPSETTING(    0x02, "4" )
  161.     PORT_DIPSETTING(    0x03, "5" )
  162.     PORT_DIPNAME( 0x0C, 0x04, DEF_STR( Coinage ) )
  163.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  164.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_1C ) )
  165.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
  166.     PORT_DIPNAME( 0x10, 0x00, "Top Score" )
  167.     PORT_DIPSETTING(    0x00, "No Award" )
  168.     PORT_DIPSETTING(    0x10, "Credit Awarded" )
  169.     PORT_BIT( 0x60, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  170.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_VBLANK )
  171. INPUT_PORTS_END
  172.  
  173.  
  174. INPUT_PORTS_START( ripcord )
  175.     PORT_START /* IN0 */
  176.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 )
  177.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  178.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  179.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
  180.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
  181.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
  182.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
  183.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
  184.  
  185.     PORT_START      /* Dip Switch */
  186.     PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
  187.     PORT_DIPSETTING(    0x00, "3" )
  188.     PORT_DIPSETTING(    0x01, "5" )
  189.     PORT_DIPSETTING(    0x02, "7" )
  190.     PORT_DIPSETTING(    0x03, "9" )
  191.     PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Coinage ) )
  192.     PORT_DIPSETTING(    0x00, "2 Player - 1 Coin" )
  193.     PORT_DIPSETTING(    0x04, "1 Player - 1 Coin" )
  194.     PORT_DIPSETTING(    0x08, "1 Player - 2 Coin" )
  195. //    PORT_DIPSETTING(    0x0c, "1 Player - ? Coin" )
  196.     PORT_DIPNAME( 0x10, 0x10, "Top Score" )
  197.     PORT_DIPSETTING(    0x10, "Credit Awarded" )
  198.     PORT_DIPSETTING(    0x00, "No Award" )
  199.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
  200.  
  201.     PORT_START      /* IN2 - paddle */
  202.     PORT_ANALOG( 0xff, 115, IPT_PADDLE, 30, 10, 64, 167 )
  203. INPUT_PORTS_END
  204.  
  205. static unsigned char palette[] =
  206. {
  207.     0x00,0x00,0x00, /* BLACK */
  208.     0xff,0xff,0xff, /* WHITE */
  209. };
  210.  
  211. #define ARTWORK_COLORS (254 + 32768)
  212.  
  213. static void init_palette(unsigned char *game_palette, unsigned short *game_colortable,const unsigned char *color_prom)
  214. {
  215.     memcpy(game_palette,palette,sizeof(palette));
  216. }
  217.  
  218.  
  219. static struct GfxLayout charlayout =
  220. {
  221.     8,8,    /* 8*8 characters */
  222.     256,    /* 256 characters */
  223.     1,              /* 1 bit per pixel */
  224.     { 0 },
  225.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  226.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  227.     8*8     /* every char takes 8 consecutive bytes */
  228. };
  229.  
  230. static struct GfxLayout clownlayout =
  231. {
  232.     16,16,  /* 16*16 characters */
  233.     16,             /* 16 characters */
  234.     1,              /* 1 bit per pixel */
  235.     { 0 },
  236.     { 0, 1, 2, 3, 4, 5, 6, 7,
  237.       16*8, 16*8+1, 16*8+2, 16*8+3, 16*8+4, 16*8+5, 16*8+6, 16*8+7 },
  238.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  239.       8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
  240.     16*16   /* every char takes 64 consecutive bytes */
  241. };
  242.  
  243. static struct GfxLayout robotlayout =
  244. {
  245.     8,8,  /* 16*16 characters */
  246.     1,      /* 1 character */
  247.     1,      /* 1 bit per pixel */
  248.     { 0 },
  249.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  250.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  251.     8
  252. };
  253.  
  254. static struct GfxDecodeInfo gfxdecodeinfo[] =
  255. {
  256.     { REGION_GFX1, 0, &charlayout,  0, 1 },
  257.     { REGION_GFX2, 0, &clownlayout, 0, 1 },
  258.     { -1 } /* end of array */
  259. };
  260.  
  261. static struct GfxDecodeInfo robotbowl_gfxdecodeinfo[] =
  262. {
  263.     { REGION_GFX1, 0, &charlayout,  0, 1 },
  264.     { REGION_GFX2, 0, &robotlayout, 0, 1 },
  265.     { -1 } /* end of array */
  266. };
  267.  
  268.  
  269.  
  270. /***************************************************************************
  271.   Machine drivers
  272. ***************************************************************************/
  273.  
  274. static void init_robotbwl(void)
  275. {
  276.     int i;
  277.  
  278.     /* PROM is reversed, fix it! */
  279.  
  280.     for (i = 0;i < memory_region_length(REGION_GFX2);i++)
  281.         memory_region(REGION_GFX2)[i] ^= 0xFF;
  282. }
  283.  
  284. static int ripcord_interrupt (void)
  285. {
  286.     circus_interrupt = 0;
  287.     if (1)
  288.         return ignore_interrupt();
  289.     else
  290.         return interrupt();
  291. }
  292.  
  293. static struct DACinterface dac_interface =
  294. {
  295.     1,
  296.     { 255, 255 }
  297. };
  298.  
  299. static struct MachineDriver machine_driver_circus =
  300. {
  301.     /* basic machine hardware */
  302.     {
  303.         {
  304.             CPU_M6502,
  305.             11289000/16,    /* 705.562kHz */
  306.             readmem,writemem,0,0,
  307.             interrupt,1
  308.         }
  309.     },
  310.     57, 3500,    /* frames per second, vblank duration (complete guess) */
  311.     1,      /* single CPU, no need for interleaving */
  312.     0,
  313.  
  314.     /* video hardware */
  315.     32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
  316.     gfxdecodeinfo,
  317.     ARTWORK_COLORS,ARTWORK_COLORS,        /* Leave extra colors for the overlay */
  318.     init_palette,
  319.  
  320.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY | VIDEO_MODIFIES_PALETTE,
  321.     0,
  322.     circus_vh_start,
  323.     generic_vh_stop,
  324.     circus_vh_screenrefresh,
  325.  
  326.     /* sound hardware */
  327.     0,0,0,0,
  328.     {
  329.         {
  330.             SOUND_DAC,
  331.             &dac_interface
  332.         }
  333.     }
  334. };
  335.  
  336.  
  337. static struct MachineDriver machine_driver_robotbwl =
  338. {
  339.     /* basic machine hardware */
  340.     {
  341.         {
  342.             CPU_M6502,
  343.             11289000/16,    /* 705.562kHz */
  344.             readmem,writemem,0,0,
  345.             interrupt,1
  346.         }
  347.     },
  348.     57, 3500,    /* frames per second, vblank duration (complete guess) */
  349.     1,      /* single CPU, no need for interleaving */
  350.     0,
  351.  
  352.     /* video hardware */
  353.     32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
  354.     robotbowl_gfxdecodeinfo,
  355.     2, 2,
  356.     init_palette,
  357.  
  358.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
  359.     0,
  360.     generic_vh_start,
  361.     generic_vh_stop,
  362.     robotbowl_vh_screenrefresh,
  363.  
  364.     /* sound hardware */
  365.     0,0,0,0,
  366.     {
  367.         {
  368.             SOUND_DAC,
  369.             &dac_interface
  370.         }
  371.     }
  372. };
  373.  
  374. static struct MachineDriver machine_driver_crash =
  375. {
  376.     /* basic machine hardware */
  377.     {
  378.         {
  379.             CPU_M6502,
  380.             11289000/16,    /* 705.562kHz */
  381.             readmem,writemem,0,0,
  382.             interrupt,2
  383.         }
  384.     },
  385.     57, 3500,    /* frames per second, vblank duration (complete guess) */
  386.     1,      /* single CPU, no need for interleaving */
  387.     0,
  388.  
  389.     /* video hardware */
  390.     32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
  391.     gfxdecodeinfo,
  392.     2, 2,
  393.     init_palette,
  394.  
  395.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
  396.     0,
  397.     generic_vh_start,
  398.     generic_vh_stop,
  399.     crash_vh_screenrefresh,
  400.  
  401.     /* sound hardware */
  402.     0,0,0,0,
  403.     {
  404.         {
  405.             SOUND_DAC,
  406.             &dac_interface
  407.         }
  408.     }
  409. };
  410.  
  411. static struct MachineDriver machine_driver_ripcord =
  412. {
  413.     /* basic machine hardware */
  414.     {
  415.         {
  416.             CPU_M6502,
  417.             705562,        /* 11.289MHz / 16 */
  418.             readmem,writemem,0,0,
  419.             ripcord_interrupt,1
  420.         }
  421.     },
  422.     57, 3500,    /* frames per second, vblank duration (complete guess) */
  423.     1,      /* single CPU, no need for interleaving */
  424.     0,
  425.  
  426.     /* video hardware */
  427.     32*8, 32*8, { 0*8, 31*8-1, 0*8, 32*8-1 },
  428.     gfxdecodeinfo,
  429.     2, 2,
  430.     init_palette,
  431.  
  432.     VIDEO_TYPE_RASTER | VIDEO_SUPPORTS_DIRTY,
  433.     0,
  434.     generic_vh_start,
  435.     generic_vh_stop,
  436.     crash_vh_screenrefresh,
  437.  
  438.     /* sound hardware */
  439.     0,0,0,0,
  440.     {
  441.         {
  442.             SOUND_DAC,
  443.             &dac_interface
  444.         }
  445.     }
  446. };
  447.  
  448.  
  449.  
  450. ROM_START( circus )
  451.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  452.     ROM_LOAD( "circus.1a",    0x1000, 0x0200, 0x7654ea75 ) /* Code */
  453.     ROM_LOAD( "circus.2a",    0x1200, 0x0200, 0xb8acdbc5 )
  454.     ROM_LOAD( "circus.3a",    0x1400, 0x0200, 0x901dfff6 )
  455.     ROM_LOAD( "circus.5a",    0x1600, 0x0200, 0x9dfdae38 )
  456.     ROM_LOAD( "circus.6a",    0x1800, 0x0200, 0xc8681cf6 )
  457.     ROM_LOAD( "circus.7a",    0x1a00, 0x0200, 0x585f633e )
  458.     ROM_LOAD( "circus.8a",    0x1c00, 0x0200, 0x69cc409f )
  459.     ROM_LOAD( "circus.9a",    0x1e00, 0x0200, 0xaff835eb )
  460.     ROM_RELOAD(               0xfe00, 0x0200 ) /* for the reset and interrupt vectors */
  461.  
  462.     ROM_REGION( 0x0800, REGION_GFX1 | REGIONFLAG_DISPOSE )
  463.     ROM_LOAD( "circus.4c",    0x0000, 0x0200, 0x6efc315a )    /* Character Set */
  464.     ROM_LOAD( "circus.3c",    0x0200, 0x0200, 0x30d72ef5 )
  465.     ROM_LOAD( "circus.2c",    0x0400, 0x0200, 0x361da7ee )
  466.     ROM_LOAD( "circus.1c",    0x0600, 0x0200, 0x1f954bb3 )
  467.  
  468.     ROM_REGION( 0x0200, REGION_GFX2 | REGIONFLAG_DISPOSE )
  469.     ROM_LOAD( "circus.14d",   0x0000, 0x0200, 0x2fde3930 )    /* Clown */
  470. ROM_END
  471.  
  472. ROM_START( robotbwl )
  473.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  474.     ROM_LOAD( "robotbwl.1a",  0xf000, 0x0200, 0xdf387a0b ) /* Code */
  475.     ROM_LOAD( "robotbwl.2a",  0xf200, 0x0200, 0xc948274d )
  476.     ROM_LOAD( "robotbwl.3a",  0xf400, 0x0200, 0x8fdb3ec5 )
  477.     ROM_LOAD( "robotbwl.5a",  0xf600, 0x0200, 0xba9a6929 )
  478.     ROM_LOAD( "robotbwl.6a",  0xf800, 0x0200, 0x16fd8480 )
  479.     ROM_LOAD( "robotbwl.7a",  0xfa00, 0x0200, 0x4cadbf06 )
  480.     ROM_LOAD( "robotbwl.8a",  0xfc00, 0x0200, 0xbc809ed3 )
  481.     ROM_LOAD( "robotbwl.9a",  0xfe00, 0x0200, 0x07487e27 )
  482.  
  483.     ROM_REGION( 0x0800, REGION_GFX1 | REGIONFLAG_DISPOSE )
  484.     ROM_LOAD( "robotbwl.4c",  0x0000, 0x0200, 0xa5f7acb9 )    /* Character Set */
  485.     ROM_LOAD( "robotbwl.3c",  0x0200, 0x0200, 0xd5380c9b )
  486.     ROM_LOAD( "robotbwl.2c",  0x0400, 0x0200, 0x47b3e39c )
  487.     ROM_LOAD( "robotbwl.1c",  0x0600, 0x0200, 0xb2991e7e )
  488.  
  489.     ROM_REGION( 0x0020, REGION_GFX2 | REGIONFLAG_DISPOSE )
  490.     ROM_LOAD( "robotbwl.14d", 0x0000, 0x0020, 0xa402ac06 )    /* Ball */
  491. ROM_END
  492.  
  493. ROM_START( crash )
  494.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  495.     ROM_LOAD( "crash.a1",     0x1000, 0x0200, 0xb9571203 ) /* Code */
  496.     ROM_LOAD( "crash.a2",     0x1200, 0x0200, 0xb4581a95 )
  497.     ROM_LOAD( "crash.a3",     0x1400, 0x0200, 0x597555ae )
  498.     ROM_LOAD( "crash.a4",     0x1600, 0x0200, 0x0a15d69f )
  499.     ROM_LOAD( "crash.a5",     0x1800, 0x0200, 0xa9c7a328 )
  500.     ROM_LOAD( "crash.a6",     0x1a00, 0x0200, 0xc7d62d27 )
  501.     ROM_LOAD( "crash.a7",     0x1c00, 0x0200, 0x5e5af244 )
  502.     ROM_LOAD( "crash.a8",     0x1e00, 0x0200, 0x3dc50839 )
  503.     ROM_RELOAD(               0xfe00, 0x0200 ) /* for the reset and interrupt vectors */
  504.  
  505.     ROM_REGION( 0x0800, REGION_GFX1 | REGIONFLAG_DISPOSE )
  506.     ROM_LOAD( "crash.c4",     0x0000, 0x0200, 0xba16f9e8 )    /* Character Set */
  507.     ROM_LOAD( "crash.c3",     0x0200, 0x0200, 0x3c8f7560 )
  508.     ROM_LOAD( "crash.c2",     0x0400, 0x0200, 0x38f3e4ed )
  509.     ROM_LOAD( "crash.c1",     0x0600, 0x0200, 0xe9adf1e1 )
  510.  
  511.     ROM_REGION( 0x0200, REGION_GFX2 | REGIONFLAG_DISPOSE )
  512.     ROM_LOAD( "crash.d14",    0x0000, 0x0200, 0x833f81e4 )    /* Cars */
  513. ROM_END
  514.  
  515. ROM_START( ripcord )
  516.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for code */
  517.     ROM_LOAD( "9027.1a",      0x1000, 0x0200, 0x56b8dc06 ) /* Code */
  518.     ROM_LOAD( "9028.2a",      0x1200, 0x0200, 0xa8a78a30 )
  519.     ROM_LOAD( "9029.4a",      0x1400, 0x0200, 0xfc5c8e07 )
  520.     ROM_LOAD( "9030.5a",      0x1600, 0x0200, 0xb496263c )
  521.     ROM_LOAD( "9031.6a",      0x1800, 0x0200, 0xcdc7d46e )
  522.     ROM_LOAD( "9032.7a",      0x1a00, 0x0200, 0xa6588bec )
  523.     ROM_LOAD( "9033.8a",      0x1c00, 0x0200, 0xfd49b806 )
  524.     ROM_LOAD( "9034.9a",      0x1e00, 0x0200, 0x7caf926d )
  525.     ROM_RELOAD(               0xfe00, 0x0200 ) /* for the reset and interrupt vectors */
  526.  
  527.     ROM_REGION( 0x0800, REGION_GFX1 | REGIONFLAG_DISPOSE )
  528.     ROM_LOAD( "9026.5c",      0x0000, 0x0200, 0x06e7adbb )    /* Character Set */
  529.     ROM_LOAD( "9025.4c",      0x0200, 0x0200, 0x3129527e )
  530.     ROM_LOAD( "9024.2c",      0x0400, 0x0200, 0xbcb88396 )
  531.     ROM_LOAD( "9023.1c",      0x0600, 0x0200, 0x9f86ed5b )
  532.  
  533.     ROM_REGION( 0x0200, REGION_GFX2 | REGIONFLAG_DISPOSE )
  534.     ROM_LOAD( "9035.14d",     0x0000, 0x0200, 0xc9979802 )
  535. ROM_END
  536.  
  537.  
  538.  
  539. GAMEX( 1977, circus,   0, circus,   circus,   0,        ROT0, "Exidy", "Circus", GAME_IMPERFECT_SOUND )
  540. GAMEX( 1977, robotbwl, 0, robotbwl, robotbwl, robotbwl, ROT0, "Exidy", "Robot Bowl", GAME_IMPERFECT_SOUND )
  541. GAMEX( 1979, crash,    0, crash,    crash,    0,        ROT0, "Exidy", "Crash", GAME_IMPERFECT_SOUND )
  542. GAMEX( 1977, ripcord,  0, ripcord,  ripcord,  0,        ROT0, "Exidy", "Rip Cord", GAME_NOT_WORKING )
  543.